package io.kimmking.dubbo.common.distributelock;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * 自定义分布式锁的注解
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface dlock {

    /**
     * 当前锁的key
     * @return
     */
    String key();

    /**
     * 获取锁的最大尝试时间
     * @return
     */
    long waitTime() default 0;

    /**
     * 加锁时长
     * @return
     */
    long leaseTime() default -1;

    /**
     * 加锁时长的时间单位
     * @return
     */
    TimeUnit unit() default TimeUnit.SECONDS;

    /**
     * 是否是公平锁
     * @return
     */
    boolean isFair() default false;
}
